package com.juzi.demo;

import java.util.Random;

public class 验证码 {
    public static void main(String[] args) {
        //4、调用获取验证码的方法得到一个随机的验证码
        String code = createCode(6);
        System.out.println("随机验证码" + code);

    }

    /**
        1、定义一个方法返回随机验证码，是否需要返回值类型申明？String 是否需要申明形参？int n
     */
    public static  String createCode(int n){
        //3、定义一个字符串变量记录生成的随机字符
        String code = "";
        //2、定义一个循环，循环n次，依次生成随机字符
        Random r =new Random();
        for (int i = 0; i <n ; i++) {
            //3、生成一个随机字符，英文大(0)小写(1)，数字(2)
            int type = r.nextInt(3);//0 1 2
            switch (type){
                case 0:
                    //大写字符（A 65  -  Z 65+25）（0 - 25）+65
                    char ch = (char) (r.nextInt(25) + 65);
                    code += ch;
                    break;
                case 1:
                    //小写字符（a 97  -  z 97+25）（0 - 25）+97
                    char ch1 = (char) (r.nextInt(25) + 97);
                    code += ch1;
                    break;
                case 2:
                    //数字字符
                    code += r.nextInt(10);//0-9
                    break;
            }
        }
        return code;
    }

}
//随机验证码的核心实现逻辑是如何进行的？
//定义一个String类型的变量存储验证码字符。
//定义一个for循环，循环5次。
//随机生成0|1|2的数据，依次代表当前位置要生成数字|大写字母|小写字母。
//把0、1、2交给switch生成对应类型的随机字符，把字符交给String变量。
//循环结束后，返回String类型的变量即是所求的验证码结果。